Encryption and decryption of information is used for hiding and/or securing information such that only intended recipients can access the information, and has a multitude of different uses and applications. In an encryption process, readable or otherwise accessible information (plaintext) is converted into unreadable encrypted information (ciphertext), and in the decryption process, the ciphertext is converted back into plaintext. One or more keys, known only to the sender and/or receiver of the information, are typically used in the encryption and decryption process as a security parameter governing the results of a particular encryption and decryption. Encryption is commonly used to protect information that is stored, communicated, or otherwise used on or between computer systems and electronic devices. In one example, some Field Programmable Gate Arrays (FPGAs) or other programmable devices can be configured using proprietary and confidential configuration data files, which can be encrypted for transmission to keep their contents secret and decrypted at the device to perform configuration tasks on the device. In another example, a smart card can encrypt and decrypt identity and other personal data of a user which can be used in commercial or other transactions.
There are many different methods which attackers can use to attempt to gain unauthorized access to encrypted information. Some encryption and decryption methods are vulnerable to what are known as “side channel attacks.” These attacks are based on information gained from exploiting the physical implementation of a cryptosystem, rather than through brute force, mathematical or other theoretical weaknesses in the encryption methods themselves. For example, a timing attack can observe data movement into and out of a CPU or memory, determine how long it takes to perform cryptographic operations by the CPU, and using statistical analysis of timing measurements, determine the entire secret key. A power analysis attack such as simple power analysis (SPA) and differential power analysis (DPA) can be used to determine a secret key by using statistical guesswork on observations of the power consumption of a hardware device such as a CPU, Field Programmable Gate Array (FPGA), or other device. Other trial-and-error methods can also be used to attempt to determine the content of an encrypted message. Some countermeasures to these attacks can be taken, but may not be sufficient to adequately protect secret information.
Accordingly, apparatus and methods that can delay or mislead attackers of encrypted information without significantly increasing the complexity of encryption would be desirable in many applications.